跳到主要内容

Canvas vs WebGL2

选择运行时

对于 Web,首先选择以下两个包之一:

它们共享相同的高级 API,因此切换包不需要更改创建 new Rive({...}) 实例的方式。关键区别在于渲染器和包大小;阅读以下部分决定最适合你的用例,并比较运行时大小上的包大小。

@rive-app/webgl2(推荐)

在大多数情况下,如果你想要最佳渲染质量和性能,请使用 @rive-app/webgl2

npm install @rive-app/webgl2
  • 使用 Rive 渲染器 获得最佳渲染性能
  • 支持仅 Rive 渲染器专属的功能(例如矢量羽化)

WebGL 对并发上下文有限制,这可能限制你可以同时运行多少个 new Rive({...}) 实例。如果你在同一页面上显示许多图形,请为每个 Rive 对象设置 useOffscreenRenderer: true。这将渲染工作转移到一个共享的离屏 WebGL 上下文,而不是在可见 canvas 上创建相同数量的单独上下文,从而有助于避免上下文限制问题,并在许多 Rive 实例处于活动状态时提高稳定性。

在 Chrome 中启用草稿 WEBGL_shader_pixel_local_storage 扩展可以提高渲染性能。没有它,Rive 会回退到基于 MSAA 的 WebGL2 路径。我们正在积极与浏览器厂商合作,使其默认启用。

@rive-app/canvas

当你的图形较简单且想要更小的运行时包时,使用 @rive-app/canvas

npm install @rive-app/canvas
  • 使用浏览器内置的 CanvasRenderingContext2D 渲染器
  • 比 WebGL2 渲染器选项更小的包大小
  • 适用于较简单的矢量/位图图形

运行时选择后的更多选项

对于基于 Canvas 的运行时选项,你可以根据打包需求使用以下变体。

@rive-app/canvas-lite 变体

我们的 Canvas 版本运行时支持 -lite 变体以获得更小的包大小。

  • 示例:@rive-app/canvas-lite
  • 当你需要最小的运行时占用空间时使用此包
  • 此包变体移除了某些功能(例如文本、布局、音频和脚本引擎)

@rive-app/canvas-single 变体

我们的 Canvas 版本运行时支持 -single 变体,它将 rive.wasm 直接打包到 JavaScript 文件中。

  • 示例:@rive-app/canvas-single
  • 如果你希望避免单独的 WASM 网络请求,请使用此包
  • 与标准包相比,预计 JS 包体积更大

已弃用的包

@rive-app/webgl 已弃用,在 v2.37.0 之后将不再接收更新。请优先使用 @rive-app/webgl2